到目前為止,我們靠著不斷嘗試和Vertex的幫助之下,順利地走完一個週期。
了解概論 -> 命題 -> 準備資料 -> 訓練模型 -> 部署 -> 應用(預測)
那麼接下來,回到一個大家都很注重的問題:如何讓模型變得更好。
在這之前必須要先了模型訓練完之後,拿到的評估函數意義。
而這其中,最直觀的就是R^2,也就是決定係數
。
這個係數的數值介於0~1之間,在說明模型是否有效,以及其模型解釋能力的大小。
基本上這個值需要0.6以上才派得上用場,不過0.6只是個大概的範圍,事實上跟過我們做的模型應用於哪一種科學比較有關係,例如社會科學、農業科學、醫學科學等等,不同領域的應用希望最低的R^2會有所不同,可能需要0.7或0.8以上也不一定。
然而我們尚屬於實驗性質的階段,其實心裡大概抓有個0.6就謝天謝地。
數值越接近1表示越好,因為模型越能解釋資料,相反越趨近於0,表示越差,因為能夠解釋的東不多。
可以粗糙的這麼想,0.5表示模型可以解釋50%的資料,假設我們模型是
y=aX1+bX2+cX3
但是實際上有某些參數,我們可能是未知並沒有挑進來處理到,因此實際上應該要長這樣子。
y=aX1+bX2+cX3 + 未知
如果剛好遇到未知
所佔比較不顯著的時候,y的數值基本上可以由aX1+bX2+cX3決定出來,這個機會大致占了50%。
請注意,這不是很精準的描述,只是個希望能讓更多人理解的概念。
所謂的未知
可能也不只有一種參數而已,其實可能是這樣: 未知參數1
+ 未知參數2
+ 未知參數3
+ ...... + 隨機誤差
。
換句話說,能夠找到更多的未知(關鍵)參數,模型的解釋能力就越強。
既然關鍵是怎麼找出更多有效的參數,也反應了為什麼 資料的好壞
佔了如此的重要性。
到此我們整理一下模型的優化有哪些關鍵:
選用組成模型的主要函式是否洽當,例如是用「線性回歸」還是「複迴歸」組成模型的基底結果是不一樣的,迴歸可套用的方程式其實有好幾種,幸運的是Vertex自己會去找出一個適當的函式來訓練模型,我們不用煩惱,當然我們也不知道Vertex最後挑選的結果。
每個參數前面的係數到底是多少比較洽當,靠著不斷的訓練(數學運算)而得出,結果並不一定是最精準或正確的數值,但一定是相對適合的數字。
如果挑進錯誤的參數,訓練的過程中自然會篩選掉(顯著程度),所以多挑參數進來訓練,對於有自動化的套件或框架,或像Vertex這種自動處理的服務,是小事一件,多花費一點效能而已,參數的數量是多多益善,多挑到一個關鍵的參數都是賺,因為未知
之所以未知
,就是因為我們無法掌控那部份的情況,如果能夠多減少一部分的未知
,是不是相對的已知部分會變多,那麼模型的解釋能力就會更好。
由於自己並非資料科學的專業人士,無法把所有可以考慮的面向總結地全部列出來,但知道還有其他方式可以作為優化的參考,例如了解資料的分布,做一些數值上的轉換等等(transformation),這個部分就請有興趣的人自行鑽研了。
最後值得一提的是,R^2雖然越接近1越好,但實際上若R^2=1或大於0.95以上不見得一定是好事,可能不小心把某些幾乎是答案的參數納入進來,這等於沒有意義,因此要回頭過來重新檢視資料的組成。